package com.example.designer.iter;

import com.example.designer.iter.impl.ArrayMenu;
import com.example.designer.iter.impl.ListMenu;

/**
 * 迭代器对不同实现的代码进行一个统一遍历 而不需要暴露其对象内部具体实现逻辑
 * 例如 一个有list实现的菜单和一个由array实现的菜单  如果在服务员类里单独对其遍历拿到其菜单  这样的耦合性很大  当后期在添加一个新的其他实现的菜单时
 *      需要修改waiter类中的代码  可以造成一些其他不可预知错误  如果使用迭代器  这后期添加的其他菜单直接实现迭代器就可以了  原来的代码不需要做如何改变
 */
public class Test {

    public static void main(String[] args) {
        ListMenu listMenu = new ListMenu();
        ArrayMenu arrayMenu = new ArrayMenu();
        Waiter waiter = new Waiter(listMenu, arrayMenu);
        waiter.print();
    }
}
